﻿using System;
using TinyMoney.Domain.Interfaces;

namespace TinyMoney.Domain
{
    public class LegalEntity : ILegalEntity
    {
        public virtual Guid Id { get; private set; }
        public virtual string Code { get; set; }
        public virtual bool IsNaturalPerson { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string OtherNames { get; set; }
        public virtual string LastName { get; set; }
        public virtual string SaIdNumber { get; set; }
        public virtual string PassportNumber { get; set; }
        public virtual bool IsMarried { get; set; }
        public virtual ILegalEntity Spouse { get; set; }
        public virtual ILegalEntity Employer { get; set; }
        public virtual IBank Bank { get; set; }
        public virtual IBankBranch BankBranch { get; set; }
        public virtual string CompanyName { get; set; }
        public virtual string CompanyRegistration { get; set; }
        public virtual string Address1 { get; set; }
        public virtual string Address2 { get; set; }
        public virtual ICity City { get; set; }
        public virtual string LandPhoneNumber { get; set; }
        public virtual string MobileNumber { get; set; }
        public virtual string FaxNumber { get; set; }
        public virtual string EmailAddress { get; set; }

        public LegalEntity
            (Guid id, string code, bool isNaturalPerson, string firstName,
             string otherNames, string lastName, string saIdNumber, string passportNumber,
             bool isMarried, ILegalEntity spouse, ILegalEntity employer, IBank bank,
             IBankBranch bankBranch, string companyName, string companyRegistration,
             string address1, string address2, ICity city, string landPhoneNumber,
             string mobileNumber, string faxNumber, string emailAddress)
        {
            Id = id;
            Code = code;
            IsNaturalPerson = isNaturalPerson;
            FirstName = firstName;
            OtherNames = otherNames;
            LastName = lastName;
            SaIdNumber = saIdNumber;
            PassportNumber = passportNumber;
            IsMarried = isMarried;
            Spouse = spouse;
            Employer = employer;
            Bank = bank;
            BankBranch = bankBranch;
            CompanyName = companyName;
            CompanyRegistration = companyRegistration;
            Address1 = address1;
            Address2 = address2;
            City = city;
            LandPhoneNumber = landPhoneNumber;
            MobileNumber = mobileNumber;
            FaxNumber = faxNumber;
            EmailAddress = emailAddress;
        }
    }
}
